/**
 * 
 */
package estrategias;

/**
 * @author DaNieLooP
 *
 */
public class FactoriaEstrategias {
	public static final int PRIMERO_EN_ANCHURA = 0;
	public static final int PRIMERO_EN_PROFUNDIDAD = 1;
	public static final int UNIFORME = 2;
	public static final int BIDIRECCIONAL = 3;
	public static final int PROFUNDIDAD_LIMITADA = 4;
	public static final int PROFUNDIDAD_ITERATIVA = 5;
	public static final int VORAZ = 6;
	public static final int AESTRELLA = 7;
	public static final int ESCALADA_SIMPLE = 8;
	public static final int ESCALADA_MAXIMA = 9;
	public static final int ENFRIAMIENTO_SIMULADO = 10;
	
	private static int estrategia = 0;
	
	public static void seleccionaEstrategia(int estrategia){
		FactoriaEstrategias.estrategia = estrategia;
	}
	
	
	public static Estrategia getEstrategia() {
		if (estrategia == PRIMERO_EN_ANCHURA)
			return new PrimeroAnchura();
		else if (estrategia == PRIMERO_EN_PROFUNDIDAD)
			return new PrimeroProfundidad();
		else if (estrategia == UNIFORME)
			return new CosteUniforme();
		else if (estrategia == BIDIRECCIONAL)
			return new Bidireccional();
		else if (estrategia == PROFUNDIDAD_LIMITADA)
			return new ProfundidadLimitada();
		else if (estrategia == PROFUNDIDAD_ITERATIVA)
			return new ProfundidadIterativa();
		else if (estrategia == VORAZ)
			return new Voraz();
		else if (estrategia == AESTRELLA)
			return new AEstrella();
		else if (estrategia == ESCALADA_SIMPLE)
			return new EscaladaSimple();
		else if (estrategia == ESCALADA_MAXIMA)
			return new EscaladaMaxima();
		else if (estrategia == ENFRIAMIENTO_SIMULADO)
			return new EnfriamientoSimulado();
		else
			return null;
	}
}